تحریریه | کارتابل مشترک

آموزش ویژگی "کارتابل مشترک" در ماژول تحریریه

ویژگی "کارتابل مشترک"، ابزاری نوین و بسیار مهم در ماژول تحریریه است که برای پورتال‌هایی با زیرسایت‌های متعدد طراحی شده است. این ویژگی به شما این امکان را می‌دهد که بتوانید از اخباری که در یک زیرسایت منتشر شده‌اند، در زیرسایت‌های دیگر نیز بدون نیاز به کپی کردن محتوا و ایجاد محتوای تکراری (Duplicate Content) استفاده کنید.

۱. مشکلاتی که "کارتابل مشترک" حل می‌کند: در نسخه‌های قبلی، برای استفاده از یک خبر در زیرسایت دیگر، نیاز بود که خبر به زیرسایت مقصد "ارسال" شود که این کار باعث ایجاد یک رکورد جدید از خبر با سایت آیدی مقصد و در نتیجه تولید محتوای تکراری (Duplicate Content) می‌شد. "کارتابل مشترک" این مشکل را برطرف می‌کند.

۲. کاربردهای اصلی "کارتابل مشترک":

  • اشتراک‌گذاری اخبار بدون تکرار محتوا: فرض کنید خبری با آیدی 790 در "سایت الف" منتشر شده است. شما می‌توانید بدون اینکه این خبر را در "سایت ب" کپی کنید، آن را در "سایت ب" نمایش دهید و کاربر با کلیک روی آن، مستقیماً به صفحه خبر در "سایت الف" (سایت مبدأ) هدایت می‌شود. این یعنی خبر در سایت مقصد باز می‌شود، نه یک کپی از آن.
  • نظارت متمرکز بر اخبار: مدیران، مانند رئیس روابط عمومی سازمان، می‌توانند به کلیه اخبار منتشر شده در تمامی زیرسایت‌ها اشراف کامل داشته باشند و آن‌ها را بررسی و در صورت نیاز ویرایش کنند.

۳. نحوه پیاده‌سازی و استفاده از "کارتابل مشترک": پیاده‌سازی این ویژگی نیازمند انجام دو کار اصلی است:

  • الف) تعریف و تغییر "جایگاه خبری":

    • شما باید یک جایگاه خبری جدید تعریف کنید یا جایگاه خبری موجود را تغییر دهید.
    • تغییر کوئری (Query): مهم‌ترین تغییر در جایگاه خبری این است که محتوا باید از ویو v_contents خوانده شود،  جدول  v_contents یک ویو است که اطلاعات را از جدول contents و چند جدول دیگر ترکیب می‌کند.
    • فیلدهای انتخابی در SELECT:
      • باید فیلدهایی مانند Max(ID)، Max(MainHeadline)، Max(OtherItems)، PageURL و ParentSiteID را انتخاب کنید. استفاده از Max() و GROUP BY ID برای این است که اگر یک خبر در چندین جایگاه منتشر شده باشد، فقط یک نسخه از آن نمایش داده شود.
      • PageURL برای ساخت URL خبر ضروری است.
      • PerParentSiteID برای به دست آوردن دامنه‌ی سایت مبدأ (جایی که خبر اصلی منتشر شده) نیاز است.
    • شرط‌های WHERE در کوئری:
      • Deleted = 0 (خبر حذف نشده باشد).
      • SiteID = SystemTreeSiteID (محتوای همان سایت را بیاورد).
      • Publish = 1 (خبر منتشر شده باشد).
      • PresentInSite (خبر قفل نشده باشد).
      • Position = 98 (این آیدی مربوط به کوئری جایگاه خبری است که شما برای مثال اخبار استانی را در آن نمایش می‌دهید).
    • کوئری باید بر اساس ID گروه‌بندی (GROUP BY ID) و بر اساس CustomDateTime مرتب‌سازی (ORDER BY CustomDateTime) شود.
  • ب) ساخت لینک‌سازی (URL) خبر:

    • برای ساخت URL خبر، باید از یک کوئری ثانویه استفاده کنید که Domain (دامنه) و Protocol (پروتکل) را از جدول Website بر اساس ParentSiteID (که در کوئری اول SELECT شده بود) دریافت کند.
    • سپس URL خبر به این شکل ساخته می‌شود: Protocol + "://" + Domain + PageURL.
    • در نهایت، عنوان خبر (MainHeadline) و آیدی خبر نیز در تگ A قرار داده می‌شوند.
    • این جایگاه (که شامل کوئری و لینک‌سازی است) در هر قالبی که بخواهید قرار می‌گیرد و به این ترتیب، خبر از یک سایت دیگر در سایت شما منتشر می‌شود.

۴. مدیریت سطوح دسترسی در "کارتابل مشترک": این ماژول امکان کنترل دقیق دسترسی کاربران را فراهم می‌کند.

  • هنگام ساخت کاربر جدید، در بخش دسترسی‌ها و در قسمت "مدیریت مطالب"، دو گزینه جدید اضافه شده است:
    • مدیر کارتابل مشترک: این دسترسی به کاربر امکان مشاهده، انتشار و ویرایش خبر را می‌دهد.
    • کارشناس کارتابل مشترک: این دسترسی فقط به کاربر امکان مشاهده و انتشار خبر را می‌دهد و نمی‌تواند خبر را ویرایش کند.
  • علاوه بر این، شما می‌توانید مشخص کنید که هر کاربر به اخبار کدام یک از زیرسایت‌ها در کارتابل مشترک خود دسترسی داشته باشد. این دسترسی می‌تواند شامل همه زیرسایت‌ها یا تعداد محدودی از آن‌ها باشد.

۵. جمع‌بندی: "کارتابل مشترک" یک ویژگی بسیار مهم و کارآمد است که به شما کمک می‌کند تا نیازهای مربوط به مدیریت و اشتراک‌گذاری محتوا بین زیرسایت‌های مختلف را بدون ایجاد محتوای تکراری برطرف کنید. این ویژگی با تغییرات در کوئری جایگاه‌های خبری و نحوه لینک‌سازی پیاده‌سازی می‌شود و امکان کنترل دقیق سطوح دسترسی کاربران به اخبار زیرسایت‌های مختلف را نیز فراهم می‌کند

کد مربوط به کوئری جایگاه :

 
SELECT TOP 4 id, ISNULL(MAX(mainheadline),'') AS mainheadline , dbo.rew(ISNULL(MAX(mainheadline),'')) as linkMainheadline , ISNULL(MAX(picid),'') AS picid , MAX(pareparentsiteid) as pareparentsiteid, MAX(pageurl) as pageurl FROM v_contents WHERE deleted=0 and siteid=[system:site-id] and published=1 and presentinsite=0 and ISNULL(expiretime ,GETDATE()) >=GETDATE() and ISNULL(customdatetime ,GETDATE()) <=GETDATE() and positions = 98 group by id order by MAX(customdatetime) desc

کوئری مربوط به پیدا کردن دامنه خبر مورد نظر:

SELECT TOP 1 domain , protocol from websites where id= [intparameters:0:0]
 
علیرضا  اسدی
تهیه کننده:

علیرضا اسدی